---

sidebar_position: 2

sidebar_label: 发布政策

---

# LangChain 发布规则

LangChain 生态系统由不同的组件包组成（例如 `langchain-core`、`langchain`、`langchain-community`、`langgraph`、`langserve`、合作伙伴包等）。

## 版本控制

### `langchain` 和 `langchain-core`

`langchain` 和 `langchain-core` 遵循 [语义化版本控制](https://semver.org/)，版本格式为 0.**Y**.**Z**。这些包正在快速开发中，因此当前版本号的主版本号为 0。

次要版本号将会因以下情况增加：

- 对任何标记为 `beta` 的公共接口进行重大更改。

补丁版本号将会因以下情况增加：

- 修复错误

- 新功能

- 对私有接口的任何更改

- 对 `beta` 功能的任何更改

在升级次要版本号时，用户应该查看重大更改和弃用列表。

我们会不时将包版本化为**发布候选版**。这些版本旨在作为稳定版本发布，但在发布之前我们希望从社区获得反馈。发布候选版的版本号为 0.**Y**.**Z**rc**N**。例如，0.2.0rc1。如果没有发现问题，发布候选版将以相同版本号发布为稳定版本。如果发现问题，我们将发布一个新的发布候选版，版本号中的 `N` 值会递增（例如，0.2.0rc2）。

### LangChain 生态系统中的其他包

生态系统中的其他包（包括用户包）可以采用不同的版本控制方案，但通常应该固定到特定的 `langchain` 和 `langchain-core` 次要版本。

## 发布频率

我们预计将 `langchain` 和 `langchain-core` 的**次要**版本（例如，从 0.2.0 到 0.3.0）至少间隔 2-3 个月发布一次，因为这些版本可能包含重大更改。

补丁版本经常发布，因为它们包含了错误修复和新功能。

## API 稳定性

LLM 应用程序的开发是一个快速发展的领域，我们不断从用户和社区中学习。因此，我们预计 `langchain` 和 `langchain-core` 中的 API 将继续发展以更好地满足用户的需求。

尽管 `langchain` 和 `langchain-core` 目前处于 1.0 之前的状态，但我们致力于保持这些包中的 API 稳定性。

- 对公共 API 的重大更改将导致次要版本号的增加（第二位数字）

- 任何错误修复或新功能将导致补丁版本号的增加（第三位数字）

我们通常会尽量避免进行不必要的更改，并为即将移除的功能提供弃用政策。

### 其他包的稳定性

LangChain 生态系统中其他包的稳定性可能有所不同：

- `langchain-community` 是一个由社区维护的包，包含第三方集成。虽然我们尽力审查和测试 `langchain-community` 中的更改，但预计 `langchain-community` 将比 `langchain` 和 `langchain-core` 经历更多重大更改，因为它包含许多社区贡献。

- 合作伙伴包可能遵循不同的稳定性和版本控制政策，用户应参考这些包的文档以获取更多信息；但总体而言，这些包预计是稳定的。

### 什么是“API 稳定性”？

API 稳定性意味着：

- 所有公共 API（本文档中的所有内容）不会在不提供向后兼容别名的情况下移动或重命名。

- 如果向这些 API 添加新功能（这是很可能的），它们不会破坏或改变现有方法的含义。换句话说，“稳定”并不（必然）意味着“完整”。

- 如果由于某种原因必须删除或替换已声明为稳定的 API，将声明其已弃用，但将在至少两个次要版本的 API 中保留。在调用已弃用方法时将发出警告。

### **标记为内部 API**

某些 API 明确标记为“内部”，有几种方式：

- 一些文档提到内部内容并将其标记为内部。如果文档表示某些内容是内部的，那么它可能会发生更改。

- 以下划线（**`_`**）开头的函数、方法和其他对象。这是指示某些内容为私有的标准 Python 约定；如果任何方法以单个下划线（**`_`**）开头，那么它是内部 API。

    - **例外：**某些方法以 `_` 开头，但不包含实现。这些方法是由提供实现的子类重写的。这些方法通常是 LangChain 的**公共 API**的一部分。

## 弃用政策

我们通常不会弃用功能，直到有更好的替代方案可用。

当一个功能被弃用时，在当前版本和下一个次要版本的 `langchain` 和 `langchain-core` 中它仍然可以正常工作。之后，该功能将被移除。

由于我们预计每隔2-3个月发布一个次要版本，这意味着一个功能在被弃用后可能在2-6个月内被移除。

在某些情况下，如果一个功能在软件包中没有引起问题，我们可能会允许该功能在代码库中保留更长的时间，以减轻用户的负担。